package com.xxl.job.executor.pojo;

import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;

import java.util.Date;
import java.util.List;

/**
 * @description: B10 ETC出口原始表
 * @author: draghu
 * @create: 2020-03-16 17:16
 */
@Data
public class ETCBOutList {


    @JSONField(name = "ListNo")
    private String ListNo;


    @JSONField(name = "RecordNo")
    private Integer RecordNo;


    @JSONField(name = "StationNo")
    private Integer StationNo;

    @JSONField(name = "SquareNo")
    private Integer SquareNo;


    @JSONField(name = "LaneNo")
    private Integer LaneNo;

    @JSONField(name = "LaneType")
    private Integer LaneType;


    @JSONField(name = "SamID")
    private String SamID;


    @JSONField(name = "ProgramVer")
    private String ProgramVer;


    @JSONField(name = "InListNo")
    private String InListNo;


    @JSONField(name = "InStationNo")
    private Integer InStationNo;


    @JSONField(name = "InLaneNo")
    private Integer InLaneNo;

    @JSONField(name = "InVehType")
    private Integer InVehType;

    @JSONField(name = "InVehClass")
    private Integer InVehClass;

    @JSONField(name = "InVehPlate")
    private String InVehPlate;


    @JSONField(name = "InOperatorNo")
    private String InOperatorNo;

    @JSONField(name = "InOpTime", format = "yyyy-MM-dd'T'HH:mm:ss")
    //excel校验要求必填
    private Date InOpTime;      // datetime 类型


    @JSONField(name = "InSquareNo")
    private Integer InSquareNo;


    @JSONField(name = "InDirection")
    private Integer InDirection;


    @JSONField(name = "InAxisType")
    private Integer InAxisType;


    @JSONField(name = "InTotalWeight")
    private Integer InTotalWeight;


    @JSONField(name = "InPsamNo")
    private String InPsamNo;


    @JSONField(name = "InSamNo")
    private String InSamNo;

    @JSONField(name = "PVehType")
    private Integer PVehType;

    @JSONField(name = "PVehClass")
    private Integer PVehClass;


    @JSONField(name = "BVClass")
    private Integer BVClass;

    /**
     * 车型
     * "1-一型客车
     * 2-二型客车
     * 3-三型客车
     * 4-四型客车
     * 11-一型货车
     * 12-二型货车
     * 13-三型货车
     * 14-四型货车
     * 15-五型货车
     * 16-六型货车
     * 21-一型专项作业车
     * 22-二型专项作业车
     * 23-三型专项作业车
     * 24-四型专项作业车
     * 25-五型专项作业车
     * 26-六型专项作业车
     */
    @JSONField(name = "VehType")
    private Integer VehType;   // ==> 对应部标vehicleType

    @JSONField(name = "VehClass")
    private Integer VehClass;

    @JSONField(name = "VehPlate")
    private String VehPlate;

    @JSONField(name = "VehTypeAuto")
    private Integer VehTypeAuto;

    @JSONField(name = "VehPlateAuto")
    private String VehPlateAuto;


    @JSONField(name = "SquadNo")
    private Integer SquadNo;


    @JSONField(name = "SquadDate")
    private Integer SquadDate;


    @JSONField(name = "OperatorNo")
    private String OperatorNo;


    @JSONField(name = "OperatorName")
    private String OperatorName;

    @JSONField(name = "OpTime", format = "yyyy-MM-dd'T'HH:mm:ss")
    private Date OpTime;     // datetime 类型


    @JSONField(name = "CardBoxNo")
    private Integer CardBoxNo;


    @JSONField(name = "CardBoxCardNo")
    private Integer CardBoxCardNo;


    @JSONField(name = "CardTrunkNo")
    private Integer CardTrunkNo;


    @JSONField(name = "TicketType")
    private Integer TicketType;

   // @Size(min = 20, message = "gantryId size is 20")
   // @Size(max = 20, message = "gantryId size is 20")
    @JSONField(name = "CardID")
    private String CardID;

    @JSONField(name = "CardNo")
    private String CardNo;


    @JSONField(name = "PassNum")
    private Integer PassNum;


    @JSONField(name = "Direction")
    private Integer Direction;


    @JSONField(name = "HighSpEvent")
    private Integer HighSpEvent;


    @JSONField(name = "MidSpEvent")
    private Integer MidSpEvent;


    @JSONField(name = "LowSpEvent")
    private Integer LowSpEvent;


    @JSONField(name = "LastSpEvent")
    private Integer LastSpEvent;


    @JSONField(name = "SpVehKind")
    private Integer SpVehKind;


    @JSONField(name = "EntryTotalToll")
    private Integer EntryTotalToll;


    @JSONField(name = "PTotalToll")
    private Long PTotalToll;

    @JSONField(name = "TotalToll")
    private Integer TotalToll;

    @JSONField(name = "InvoiceID")
    private Long InvoiceID;


    @JSONField(name = "InvoiceType")
    private Integer InvoiceType;

    @JSONField(name = "AxisNum")
    private Integer AxisNum;

    @JSONField(name = "TotalWeight")
    private Integer TotalWeight;

    @JSONField(name = "LimitWeight")
    private Integer LimitWeight;


    @JSONField(name = "OverLoadRate")
    private Integer OverLoadRate;


    @JSONField(name = "AxisType")
    private Integer AxisType;


    @JSONField(name = "PAxisInfo")
    private String PAxisInfo;


    @JSONField(name = "AxisInfo")
    private String AxisInfo;


    @JSONField(name = "AxisExceedRate")
    private Integer AxisExceedRate;


    @JSONField(name = "PriceVerNo")
    private Integer PriceVerNo;


    @JSONField(name = "AxisEdition")
    private Integer AxisEdition;


    @JSONField(name = "GoodsType")
    private String GoodsType;


    @JSONField(name = "RebateVer")
    private Integer RebateVer;


    @JSONField(name = "FlagStationID")
    private String FlagStationID;


    @JSONField(name = "FreeRegion")
    private String FreeRegion;


    @JSONField(name = "KeyPressInfo")
    private String KeyPressInfo;


    @JSONField(name = "DeviceStatus")
    private Integer DeviceStatus;


    @JSONField(name = "VehNum")
    private Integer VehNum;

    @JSONField(name = "RecordType")
    private Integer RecordType;


    @JSONField(name = "UndoListNo")
    private String UndoListNo;


    @JSONField(name = "RecordTTAG")
    private Integer RecordTTAG;


    @JSONField(name = "CardMark")
    private Integer CardMark;


    @JSONField(name = "EncrypVer")
    private Integer EncrypVer;


    @JSONField(name = "IdentifyStatus")
    private Integer IdentifyStatus;


    @JSONField(name = "EleListno")
    private String EleListno;

    @JSONField(name = "EleObuID")
    private String EleObuID;


    @JSONField(name = "EleCardType")
    private Integer EleCardType;

    @JSONField(name = "EleCardNo")
    private String EleCardNo;   //excel校验要求必填

    @JSONField(name = "EleCardID")
    private String EleCardID;

    @JSONField(name = "EleTradeNo")
    private String EleTradeNo;


    @JSONField(name = "ElePsamID")
    private String ElePsamID;

    @JSONField(name = "ElePsamTradeNo")
    private String ElePsamTradeNo;

    @JSONField(name = "EleTradeType")
    private Integer EleTradeType;

    @JSONField(name = "ElePayMethod")
    private Integer ElePayMethod;

    @JSONField(name = "EleBBalance")
    private Long EleBBalance;

    @JSONField(name = "EleABalance")
    private Long EleABalance;


    @JSONField(name = "EleRebate")
    private Integer EleRebate;

    @JSONField(name = "EleTac")
    private String EleTac;


    @JSONField(name = "BankType")
    private Integer BankType;


    @JSONField(name = "BankErrorNo")
    private Integer BankErrorNo;


    @JSONField(name = "BankTradeNo")
    private String BankTradeNo;


    @JSONField(name = "BankTrxNo")
    private String BankTrxNo;


    @JSONField(name = "BankTranTac")
    private Integer BankTranTac;


    @JSONField(name = "BankTermID")
    private String BankTermID;


    @JSONField(name = "EleTradeTac")
    private String EleTradeTac;


    @JSONField(name = "EleTermID")
    private String EleTermID;


    @JSONField(name = "EDecreRecord")
    private String EDecreRecord;


    @JSONField(name = "Spare1")
    private Integer Spare1;


    @JSONField(name = "Spare2")
    private Integer Spare2;


    @JSONField(name = "Spare3")
    private Integer Spare3;


    @JSONField(name = "Spare4")
    private Integer Spare4;


    @JSONField(name = "Spare5")
    private String Spare5;


    @JSONField(name = "Spare6")
    private String Spare6;


    @JSONField(name = "VerifyCode")
    private Integer VerifyCode;


    @JSONField(name = "TransferTag")
    private Integer TransferTag;

    @JSONField(name = "mediaType")
    private Integer mediaType;


    @JSONField(name = "transType")
    private String transType;

    @JSONField(name = "enTollLaneId")
    private String enTollLaneId;

    // excel校验规则必填,且长度大小为10
    @JSONField(name = "enTollLaneHex")
    private String enTollLaneHex;

    @JSONField(name = "exTollLaneId")
    private String exTollLaneId;

    @JSONField(name = "enTollStationName")
    private String enTollStationName;

    @JSONField(name = "exTollStationName")
    private String exTollStationName;

    @JSONField(name = "serviceType")
    private Integer serviceType;

    @JSONField(name = "algorithmIdentifier")
    private Integer algorithmIdentifier;


    @JSONField(name = "discount")
    private Long discount;

    @JSONField(name = "payType")
    private Integer payType;

    @JSONField(name = "identification")
    private Integer identification;


    @JSONField(name = "description")
    private String description;


    @JSONField(name = "specialType")
    private String specialType;


    @JSONField(name = "vehicleSignId")
    private String vehicleSignId;

    // excel校验规则必填  entime => InOpTime MediaNo => CardNo
    @JSONField(name = "passId")
    private String passId;


    @JSONField(name = "tollSupport")
    private Integer tollSupport;

    @JSONField(name = "multiProvince")
    private Integer multiProvince;

    @JSONField(name = "obuSign")
    private Integer obuSign;


    @JSONField(name = "electricalPercentage")
    private Integer electricalPercentage;

    /**
     * 处理标识； 1 - 成功 ； 2 - 失败
     */
    @JSONField(name = "signStatus")
    private Integer signStatus;


    @JSONField(name = "datatype")
    private Integer datatype;

    @JSONField(name = "splitProvince")
    private Integer splitProvince;

    @JSONField(name = "transFee")
    private Integer transFee;  //todo 必须等于fee

    @JSONField(name = "enAxleCount")
    private Integer enAxleCount;

    //excel校验规则必填
    @JSONField(name = "enWeight")
    private Integer enWeight;

    @JSONField(name = "receiveTime", format = "yyyy-MM-dd'T'HH:mm:ss")
    private Date receiveTime;     // datetime 类型


    @JSONField(name = "packName")
    private String packName;


    @JSONField(name = "updateState")
    private Integer updateState;

    @JSONField(name = "vehicleSign")
    private String vehicleSign;

   //
   //
    @JSONField(name = "fee")
    private Integer fee;

    @JSONField(name = "noCardCount")
    private Integer noCardCount;


    @JSONField(name = "shortFee")
    private Integer shortFee;


    @JSONField(name = "feeRate")
    private Integer feeRate;

    @JSONField(name = "exitFeeType")
    private Integer exitFeeType;

    @JSONField(name = "spcRateVersion")
    private String spcRateVersion;


//    @JSONField(name = "cardFee
//    private Integer cardFee;


//    @JSONField(name = "obuFee
//    private Integer obuFee;


    @JSONField(name = "provFee")
    private Integer provFee;


    @JSONField(name = "totalCount")
    private Integer totalCount;


    @JSONField(name = "provTransCount")
    private Integer provTransCount;

    @JSONField(name = "provinceCount")
    private Integer provinceCount;

    @JSONField(name = "discountType")
    private Integer discountType;


    @JSONField(name = "provinceDiscountFee")
    private Integer provinceDiscountFee;


    @JSONField(name = "originFee")
    private Integer originFee;


    @JSONField(name = "feeMileage")
    private Integer feeMileage;


//    @JSONField(name = "transPayType")
//    private Integer transPayType;

    @JSONField(name = "tollProvinceId")
    private String tollProvinceId;

    @JSONField(name = "dataDtail")
    private List<ETCBoutListDetail> dataDtail;


    @JSONField(name = "IssuerId")
    private String IssuerId;


    @JSONField(name = "obuTotalAmount")
    private Long obuTotalAmount;


    @JSONField(name = "obuTotalDiscountAmount")
    private Long obuTotalDiscountAmount;


    @JSONField(name = "ETCTotalAmount")
    private Long ETCTotalAmount;


    @JSONField(name = "shortFeeMileage")
    private Long shortFeeMileage;


    @JSONField(name = "feeBoardPlay")
    private Integer feeBoardPlay;


    @JSONField(name = "OBUtotalCount")
    private Integer OBUtotalCount;


    @JSONField(name = "enstationhex")
    private String enstationhex;

    // ============================ 3-27 ============================
    @JSONField(name = "hgSendFlag")
    private Integer hgSendFlag;

}
